//
//  RevanNavigationController.swift
//  weibo_swift
//
//  Created by 紫荆秋雪 on 16/11/29.
//  Copyright © 2016年 紫荆秋雪. All rights reserved.
//

import UIKit


//MARK: 1、系统生命周期
class RevanNavigationController: UINavigationController {
    
    // 1-1、系统生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        //1、隐藏导航栏
        navigationBar.isHidden = true
    }

    // 1-2、重写 导航控制器的 push方法
    /// 重写 导航控制器的 push方法，来隐藏BottomBar
    ///
    /// - Parameters:
    ///   - viewController: push的目标控制器
    ///   - animated: true：动画，false: 没有动画
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        //通过判断 "导航控制器栈中子控制器的个数"来决定是否隐藏 BottomBar
        if childViewControllers.count > 0 {
            viewController.hidesBottomBarWhenPushed = true
            
            //通过判断 显示 "返回" 还是 title
            if let vc = viewController as? RevanBaseViewController {
                var title = "返回"
                if childViewControllers.count == 1 {//显示“标题”
                    title = childViewControllers.first?.title ?? "返回"
                }
                //取出自定的navItem 设置leftBarButtonItem
                vc.navItem.leftBarButtonItem = UIBarButtonItem(title: title, target: self
                    , action: #selector(popToParent), isBack: true)
            }
        }
        //执行到这来时，childViewControllers.count = 0,因为现在有一个“根控制器”
        // 实现父类方法
        super.pushViewController(viewController, animated: true)
        //执行到这来时，childViewControllers.count = 1,因为现在有一个“根控制器”
    }
    
    // 1-3、返回上一级
    func popToParent() {
        //返回上一级控制器
        popViewController(animated: true)
    }

}
